package nextel.visita.bean;

import nextel.Configuracion;
import nextel.ruta.ControlRuta;
import nextel.usuario.ControlUsuario;
import pe.com.nextel.rms.DataInputStreamX;
import pe.com.nextel.rms.DataOutputStreamX;
import pe.com.nextel.rms.PersistenteX;
import java.io.IOException;
import org.kxml2.io.KXmlParser;
import org.kxml2.io.KXmlSerializer;
import pe.com.nextel.util.Fecha;
import pe.com.nextel.util.List;
import pe.com.nextel.util.StringUtils;

/**
 *
 * @author eespinoza
 */
public class TransaccionBean extends PersistenteX {

    public String codigoActividad;
    public String usuario;
    public long fechaInicio;
    public long fechaFin;
    public String codigoEstado;
    public String codigoMotivoNoEntrega = "";
    public String codigoListaEntrega;
    public String observacion;
    public int numeroFoto;
    public long latitud;
    public long longitud;
    public int velocidad;
    public int exactitud;
    public String celda;
    public int cantidadEstados;
    public int cantidadEstadoAtendidos;
    public int errorPosicion;
    public int errorConexion;
    public int bateria;
    public int senal;
    public String telefono;
    public String ip;
    public String modelo;

    public String getFechaInicio() {
        String[] fechaString1 = Fecha.convertTimeLongToString(fechaInicio);
        return fechaString1[0] + ' ' + fechaString1[1];
    }

    public void persistir(DataOutputStreamX dataOutput, List list) throws IOException {

        dataOutput.writeString(StringUtils.stringNullToBlank(codigoActividad));
        dataOutput.writeString(StringUtils.stringNullToBlank(usuario));
        dataOutput.writeLong(fechaInicio);
        dataOutput.writeLong(fechaFin);
        dataOutput.writeString(StringUtils.stringNullToBlank(codigoEstado));

        dataOutput.writeString(StringUtils.stringNullToBlank(codigoListaEntrega));
        dataOutput.writeLong(latitud);
        dataOutput.writeLong(longitud);
        dataOutput.writeString(StringUtils.stringNullToBlank(celda));
        dataOutput.writeInt(velocidad);

        dataOutput.writeInt(exactitud);
        dataOutput.writeString(StringUtils.stringNullToBlank(observacion));
        dataOutput.writeString(StringUtils.stringNullToBlank(codigoMotivoNoEntrega));
        dataOutput.writeInt(cantidadEstados);
        dataOutput.writeInt(cantidadEstadoAtendidos);

        dataOutput.writeInt(errorConexion);
        dataOutput.writeInt(errorPosicion);
        dataOutput.writeInt(bateria);
        dataOutput.writeInt(senal);
        dataOutput.writeString(StringUtils.stringNullToBlank(telefono));
        dataOutput.writeString(StringUtils.stringNullToBlank(ip));
        dataOutput.writeString(StringUtils.stringNullToBlank(modelo));
    }

    public List recuperar(DataInputStreamX dataInput) throws IOException {

        codigoActividad = dataInput.readString();
        usuario = dataInput.readString();
        fechaInicio = dataInput.readLong();
        fechaFin = dataInput.readLong();
        codigoEstado = dataInput.readString();

        codigoListaEntrega = dataInput.readString();
        latitud = dataInput.readLong();
        longitud = dataInput.readLong();
        celda = dataInput.readString();
        velocidad = dataInput.readInt();

        exactitud = dataInput.readInt();
        observacion = dataInput.readString();
        codigoMotivoNoEntrega = dataInput.readString();
        cantidadEstados = dataInput.readInt();
        cantidadEstadoAtendidos = dataInput.readInt();

        errorConexion = dataInput.readInt();
        errorPosicion = dataInput.readInt();
        bateria = dataInput.readInt();
        senal = dataInput.readInt();
        telefono = dataInput.readString();
        ip =  dataInput.readString();
        modelo = dataInput.readString();

        return null;
    }

    public void writeXMLObject(KXmlSerializer writer) throws IOException {
        //System.out.println("writeXMLObject");

        String[] fechaString1 = Fecha.convertTimeLongToString(fechaInicio);
        String[] fechaString2 = Fecha.convertTimeLongToString(fechaFin);

        writer.startTag(null, "d");

        writer.attribute(null, "ca", StringUtils.stringNullToBlank(codigoActividad));
        writer.attribute(null, "us", StringUtils.stringNullToBlank(usuario));
        writer.attribute(null, "fe", fechaString1[0] + ' ' + fechaString1[1]);
        writer.attribute(null, "ff", fechaString2[0] + ' ' + fechaString2[1]);
        
        writer.attribute(null, "ce", StringUtils.stringNullToBlank(codigoEstado));
        writer.attribute(null, "le", StringUtils.stringNullToBlank(codigoListaEntrega));
        writer.attribute(null, "o", StringUtils.stringNullToBlank(observacion));

        writer.attribute(null, "me", StringUtils.stringNullToBlank(codigoMotivoNoEntrega));
        writer.attribute(null, "la", String.valueOf(latitud));
        writer.attribute(null, "lo", String.valueOf(longitud));

        writer.attribute(null, "cl", StringUtils.stringNullToBlank(celda));
        writer.attribute(null, "ve", String.valueOf(velocidad));
        writer.attribute(null, "ex", String.valueOf(exactitud));
        writer.attribute(null, "cde", String.valueOf(cantidadEstados));
        writer.attribute(null, "cda", String.valueOf(cantidadEstadoAtendidos));


        writer.attribute(null, "dur", ((fechaFin - fechaInicio) / (60000) ) + "" );
        writer.attribute(null, "ec", String.valueOf(errorConexion));
        writer.attribute(null, "ep", String.valueOf(errorPosicion));
        writer.attribute(null, "ba", String.valueOf(bateria));
        writer.attribute(null, "se", String.valueOf(senal));
        writer.attribute(null, "te", StringUtils.stringNullToBlank(telefono));
        writer.attribute(null, "ip", StringUtils.stringNullToBlank(ip));
        writer.attribute(null, "mo", StringUtils.stringNullToBlank(modelo));

//            if (Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.ruta)){
        writer.attribute(null, "na", String.valueOf(ControlUsuario.getInstance().currentUsuario.totalAtender));

//            }
        writer.endTag(null, "d");


    }

    public void readXMLObject(KXmlParser parser) throws IOException {
    }
}
